home *** CD-ROM | disk | FTP | other *** search
/ Spanish Scene 1 / SpanishScene1.iso / spanish pack n°1 by llfb / --llfb-- / programas / sources1.dms / sources1.adf / SOURCES / Vectores / GumVector.ASM < prev    next >
Assembly Source File  |  1996-06-04  |  5KB  |  352 lines

  1. ;GUMVECTOR BY LADO OF FI-RE CREW IN 1992 !
  2.  
  3.  
  4. ;    org $30000
  5. ;    load $30000
  6.  
  7.  
  8.     Section    Roman,code_c
  9.  
  10.     
  11. ;    >extern 'DF0:gum.dat',datas
  12. ;    >extern 'DF0:gumsin.dat',sinus    
  13.  
  14.     
  15. j    lea workplac+$2000,a0   
  16.     moveq #0,d0
  17.     move.w #$13f,d7
  18. o1    move.w d0,(a0)+
  19.     add.w #$4e,d0
  20.     dbf d7,o1
  21.  
  22.     lea $40000,a6
  23. n1    clr.l (a6)+
  24.     cmp.l #$7fff0,a6
  25.     bcs n1
  26.     
  27.     lea $dff000,a6
  28.     move.w #$7fff,$96(a6)
  29.     move.w #$7fff,$9a(a6)
  30.     move.l #copper,$84(a6)
  31.     clr.w $8a(a6)
  32.     move.w #$87d0,$96(a6)
  33.     move.w #$c010,$9a(a6)
  34.     
  35. o2    move.l 4(a6),d0
  36.     and.l #$1ff00,d0
  37.     cmp.l #0,d0
  38.     bne o2
  39.     bsr clrscr
  40.     bsr scrchan
  41.     bsr brain
  42.     bsr finom
  43.     bsr szamol
  44.     bsr elrajz
  45.     bsr fill
  46.     btst #6,$bfe001
  47.     bne o2
  48. o3    btst #$e,2(a6)
  49.     bne o3
  50.     
  51.     move.w #$7fff,$9a(a6)
  52.     move.w #$7fff,$96(a6)
  53.     clr.w $88(a6)
  54.     move.w #$87f0,$96(a6)
  55.     move.w #$e02c,$9a(a6)
  56.     clr.l d0
  57.     rts
  58.     
  59.         
  60. clrscr    move.l erno(pc),d0
  61.     add.l #$1a82,d0
  62.     eor.w #$8000,d0
  63.     moveq #-1,d1
  64. o4    btst #$e,2(a6)
  65.     bne o4
  66.     move.l d1,$44(a6)
  67.     move.l d0,$54(a6)
  68.     clr.w $66(a6)
  69.     move.l #$1000000,$40(a6)
  70.     move.w #$894d,$58(a6)
  71.     rts
  72.  
  73. scrchan    eor.w #$8000,erno+2
  74.     eor.w #$8000,screen
  75.     eor.w #$8000,screen+4
  76.     eor.w #$8000,screen+8
  77.     rts
  78.     
  79. brain    move.l next(pc),a1
  80.     move.w (a1)+,tar
  81.     move.w (a1)+,d6
  82.     cmp.w #$f060,(a1)
  83.     bne mehet
  84.     move.l #datas+$794,next
  85.     bra o5
  86. mehet    move.l a1,next
  87.  
  88. o5    lea datas+$a70(pc),a1      
  89.     lea (a1,d6.w),a1
  90.     lea workplac(pc),a0        
  91.     moveq #8,d6
  92.     move.w #$fff6,d2
  93. o6    movem.w (a1)+,d4/d5
  94.     neg.w d4
  95.     move.w d4,(a0)+
  96.     move.w d5,(a0)+
  97.     move.w d2,d3
  98.     add.w d4,d3
  99.     move.w d3,(a0)+
  100.     move.w d4,(a0)+
  101.     move.w d5,(a0)+
  102.     neg.w d4
  103.     move.w d2,d3
  104.     add.w d4,d3
  105.     move.w d3,(a0)+
  106.     move.w d4,(a0)+
  107.     move.w d5,(a0)+
  108.     move.w d2,d3
  109.     add.w d4,d3
  110.     move.w d3,(a0)+
  111.     move.w d4,(a0)+
  112.     move.w d5,(a0)+
  113.     neg.w d4
  114.     move.w d2,d3
  115.     add.w d4,d3
  116.     move.w d3,(a0)+
  117.     dbf d6,o6
  118.     rts
  119.  
  120. finom    move.w #$7f,d5
  121.     move.w tar+10(pc),d0
  122.     addq.w #2,d0
  123.     and.w d5,d0
  124.     move.w d0,tar+10
  125.     move.w d0,d1
  126.     add.w #$10,d1
  127.     and.w d5,d1
  128.     move.w d1,d2
  129.     add.w #$10,d2
  130.     and.w d5,d2
  131.     move.w d2,d3
  132.     add.w #$10,d3
  133.     and.w d5,d3
  134.     lea workplac(pc),a0
  135.     lea datas+$9f0(pc),a1
  136.     moveq #8,d6
  137. b1    move.w (a1,d0.w),d4
  138.     add.w d4,(a0)
  139.     sub.w d4,4(a0)
  140.     move.w (a1,d1.w),d4
  141.     sub.w d4,6(a0)
  142.     add.w d4,10(a0)
  143.     move.w (a1,d2.w),d4
  144.     add.w d4,12(a0)
  145.     sub.w d4,$10(a0)
  146.     move.w (a1,d3.w),d4
  147.     sub.w d4,$12(a0)
  148.     add.w d4,$16(a0)
  149.     lea $18(a0),a0
  150.     addq.w #2,d0
  151.     and.w d5,d0
  152.     addq.w #2,d1
  153.     and.w d5,d1
  154.     addq.w #2,d2
  155.     and.w d5,d2
  156.     addq.w #2,d3
  157.     and.w d5,d3
  158.     dbf d6,b1
  159.     rts
  160.         
  161.     
  162. szamol    lea sinus(pc),a0
  163.     move.w tar+2,d7
  164.     move.w (a0,d7.w),d3
  165.     neg.w d3
  166.     swap d3
  167.     move.w (a0,d7.w),d3
  168.     add.w #$200,d7
  169.     move.w (a0,d7.w),d4
  170.     lea tar+4(pc),a1
  171.     lea workplac(pc),a2       
  172.     lea workplac+$1000,a3     
  173.     move.w tar,d6
  174.     move.w #$23,d7
  175. o9    move.w (a2),d0
  176.     move.w 4(a2),d1
  177.     muls d4,d0
  178.     swap d3
  179.     muls d3,d1
  180.     swap d3
  181.     add.l d0,d1
  182.     move.w (a2),d0
  183.     move.w 4(a2),d2
  184.     muls d3,d0
  185.     muls d4,d2
  186.     add.l d0,d2
  187.     add.l d2,d2
  188.     add.l d2,d2
  189.     swap d2
  190.     move.w 2(a2),d5
  191.     add.w d6,d5
  192.     asr.w #1,d5
  193.     swap d5
  194.     addq.l #6,a2
  195.     add.w (a1),d2
  196.     divs d2,d1
  197.     divs d2,d5
  198.     asr.w #6,d1
  199.     asr.w #6,d5
  200.     add.w 2(a1),d1
  201.     add.w 4(a1),d5
  202.     move.w d1,(a3)+
  203.     move.w d5,(a3)+
  204.     dbf d7,o9
  205.     rts
  206.  
  207. elrajz    lea datas(pc),a3
  208.     lea workplac+$1000,a4
  209.     lea workplac+$2000,a5
  210.     move.w #$4e,d0
  211. p1    btst #$e,2(a6)
  212.     bne p1
  213.     move.w d0,$60(a6)
  214.     move.w d0,$66(a6)
  215.     move.l #$ffff8000,$72(a6)
  216.     move.w #$ffff,$44(a6)
  217. p2    move.w (a3)+,d7
  218.     blt p3
  219.     move.w (a3)+,d4
  220.     move.w (a3)+,d5
  221.     move.w (a4,d4.w),d0
  222.     move.w 2(a4,d4.w),d1
  223.     move.w (a4,d5.w),d2
  224.     move.w 2(a4,d5.w),d3
  225.     move.l erno(pc),a0
  226.     bsr draw
  227.     bra p2
  228. p3    rts
  229. draw    cmp.w d1,d3
  230.     bge l1
  231.     exg d0,d2
  232.     exg d1,d3
  233. l1    cmp.w #$10e,d1
  234.     bgt p3
  235.     tst.w d3
  236.     blt p3
  237.     tst.w d1
  238.     bge l2
  239.     sub.w d2,d0
  240.     moveq #0,d4
  241.     sub.w d3,d4
  242.     muls d4,d0
  243.     sub.w d3,d1
  244.     beq l3
  245.     divs d1,d0
  246. l3    add.w d2,d0
  247.     moveq #0,d1
  248. l2    cmp.w d0,d2
  249.     bge l4
  250.     exg d0,d2
  251.     exg d1,d3
  252. l4    tst.w d2
  253.     blt p3
  254.     cmp.w d1,d3
  255.     bgt l5
  256.     exg d0,d2
  257.     exg d1,d3
  258.     beq p3
  259. l5    moveq #0,d4
  260.     moveq #0,d5
  261.     move.w d1,d4
  262.     add.w d4,d4
  263.     move.w (a5,d4.w),d4
  264.     move.w d0,d5
  265.     add.l a0,d4
  266.     asr.w #3,d5
  267.     add.l d5,d4
  268.     moveq #0,d5
  269.     sub.w d1,d3
  270.     sub.w d0,d2
  271.     bpl l6
  272.     moveq #1,d5
  273.     neg.w d2
  274. l6    move.w d3,d1
  275.     add.w d1,d1
  276.     cmp.w d2,d1
  277.     dbhi d3,l7
  278. l7    move.w d3,d1
  279.     sub.w d2,d1
  280.     bpl l8
  281.     exg d2,d3
  282. l8    addx.w d5,d5
  283.     add.w d2,d2
  284.     move.w d2,d1
  285.     sub.w d3,d2
  286.     addx.w d5,d5
  287.     and.w #$f,d0
  288.     ror.w #4,d0
  289.     or.w #$a4a,d0
  290.     move.w d2,d6
  291.     sub.w d3,d2
  292.     lsl.w #6,d3
  293.     addq.w #2,d3
  294. l9    btst #$e,2(a6)
  295.     bne l9            
  296.     move.b code(pc,d5.w),$43(a6)
  297.     movem.w d1/d2,$62(a6)
  298.     moveq #$1a,d1
  299.     bra ugro
  300. code    dc.w $343,$1353,$b4b,$1757
  301. ugro    btst #0,d7
  302.     beq j1
  303.     bsr blitt
  304. j1    add.l d1,d4
  305.     btst #1,d7
  306.     beq j2
  307.     bsr blitt
  308. j2    add.l d1,d4
  309.     btst #2,d7
  310.     beq stop
  311.     bsr blitt
  312. stop    rts
  313.     
  314. blitt    btst #$e,2(a6)
  315.     bne blitt
  316.     move.w d0,$40(a6)
  317.     move.w d6,$52(a6)
  318.     move.l d4,$48(a6)
  319.     move.l d4,$54(a6)
  320.     move.w d3,$58(a6)
  321.     rts
  322.     
  323. fill    move.l erno(pc),a1
  324.     add.l #$5242,a1
  325. n2    btst #$e,2(a6)
  326.     bne n2
  327.     move.l #$9f00012,$40(a6)
  328.     move.l a1,$50(a6)
  329.     move.l a1,$54(a6)
  330.     clr.l $64(a6)
  331.     move.w #$894d,$58(a6)
  332.     rts
  333.         
  334.  
  335.  
  336. copper    dc.w $8e,$2071,$90,$2ab1,$92,$28,$94,$88,$108,$34,$10a,$34
  337.     dc.w $180,$a98,$182,$b0b,$184,$d2d,$186,$c1c,$188,$e3e
  338.     dc.w $18a,$d2d,$18c,$f4f,$18e,$80,$2001,$fffe,$100,$3200
  339.     dc.w $e0,5,$e4,5,$e8,5,$e2
  340. screen    dc.w $50,$e6,$6a,$ea,$84,$ffdf,$fffe
  341.     dc.w $2c01,$fffe,$100,$200,$ffff,$fffe
  342.  
  343.  
  344. erno    dc.l $58050
  345. next    dc.l datas+$794
  346. tar    dc.w $48,$4c0,$b36,$68,$77,0
  347. ;                 x   zoom xerno yerno 
  348.     incdir    "Coleccion_Sources1:Sources/Vectores/"
  349. sinus    incbin     "gumsin.dat"
  350. datas    incbin    "gum.dat"
  351. workplac    dc.b 0
  352.